package com.yuw.net.udpdemo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;

public class ClientThread extends Thread {
	// 属性

	// 行为

	@Override
	public void run() {
		try {
			// ip地址串是服务器的ip地址，127.0.0.1 表示当前主机，等价于 localhost
			// 创建一个客户端DatagramSocket,指定端口号为9012
			DatagramSocket dsC = new DatagramSocket(9014);
			
			/////////////// 客户端发送消息 开始/////////////////////
			// 发送消息内容
			String strClientMsg = "hello,server,this is client...";
			// 将消息内容转换为字节数组
			byte[] buf = strClientMsg.getBytes();
			// 创建一个消息数据包对象
			DatagramPacket dpC = new DatagramPacket(buf, buf.length, new InetSocketAddress("10.96.98.125", 9013));
			// 向服务器发送内容
			dsC.send(dpC);
			
			System.out.println("客户端发送消息：" + strClientMsg);

			/////////////// 客户端发送消息 结束/////////////////////

			/////////////// 客户端端接收消息 开始/////////////////////
			// 字节数组，用于放置在packet数据包中接收服务端发送过来的消息内容
			byte[] bufReceived = new byte[1024];
			// 创建一个用于接收服务端发送消息包的数据包【这个数据包是客户器端的】
			DatagramPacket dpReceived = new DatagramPacket(bufReceived, bufReceived.length);
			// 接收网络流中的数据内容
			dsC.receive(dpReceived);
			// 从接收的数据包中将字节数组取出进行业务逻辑处理
			// 将字节数组转换字符串
			String strServerMsg = new String(bufReceived, 0, dpReceived.getLength());
			System.out.println("客户端接收消息：" + strServerMsg);
			
			/////////////// 客户端端接收消息 结束/////////////////////

		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
